'use strict';

const Controller = require('egg').Controller;
/* 
约定大于配置
egg是一个mvc的框架，view是视图，页面的展示，
controller是控制器，负责处理一些业务逻辑
model模型：和数据打交道，查询数据库，请求数据，
model是服务service，所以model放在app的service文件夹中
*/
class HomeController extends Controller {
  async index() {
    /* this是当前的控制器homeController，
    通过ctx可以获取到当前控制器的上下文 */
    // const { ctx, service } = this;
    // let res = await service.home.index()
    // // console.log(res);
    // ctx.body = res
    // 设置cookie
    this.ctx.cookies.set('username', 'zs')
    await this.ctx.render('index')
  }
  async news() {

    /*
    // 获取get参数 koa获取的方式：ctx.query
    // var query = this.ctx.query;
    // console.log(query);
    // this.ctx.body = 'news页面'
    // 用ejs模板引擎渲染页面，访问view/news.html
    // 页面中使用controller中的数据渲染页面
    var msg = "news页面中的controller数据，渲染进页面中"
    // 注意ctx.render方法为异步渲染，和koa统一
    // mvc框架的原则--数据及复杂的逻辑处理放在服务器中，获取服务器中的数据
    // egg把server绑定到this下
    var list = await this.service.news.getNewsList()
    await this.ctx.render('news', {
      msg,
      list
    })
    */

    // 调用application 拓展中的foo方法
    // this.app.foo()
    // 调用context上的getApi方法
    // this.ctx.getApi()
    /* 爬虫获取数据展示到新闻页面，但是获取数据要放在服务中 */
    var list = await this.service.news.getNewsList()
    await this.ctx.render('news', {
      list
    })
  }

  async newsList() {
    // koa获取动态路由 ctx.params
    let params = this.ctx.params
    console.log(params);
    this.ctx.body = '新闻列表页面'
  }

  async add() {
    // 获取cookie的值
    var userinfo = this.ctx.cookies.get('username')
   // 获取post提交的数据
    // var data = await this.ctx.request.body;
    // console.log(data)
    // this.ctx.body = this.ctx.request.body
    await this.ctx.render('add', {
      userinfo
    })
  }

}

module.exports = HomeController;
